From 08acb1c7554c7328952cd2262a6090a94711d47e Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Wed, 23 Jan 2008 18:02:48 +0000 Subject: [PATCH] ioemu: cache the BlockDriverState pointer This actually fixes a bug in the scsi case. Signed-off-by: Samuel Thibault --- tools/ioemu/xenstore.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/ioemu/xenstore.c b/tools/ioemu/xenstore.c index 08524fe914..88466139ed 100644 --- a/tools/ioemu/xenstore.c +++ b/tools/ioemu/xenstore.c @@ -85,6 +85,7 @@ void xenstore_parse_domain_config(int domid) *dev = NULL, *params = NULL, *type = NULL, *drv = NULL; int i, is_scsi, is_hdN = 0; unsigned int len, num, hd_index; + BlockDriverState *bs; for(i = 0; i < MAX_DISKS + MAX_SCSI_DISKS; i++) media_filename[i] = NULL; @@ -209,17 +210,17 @@ void xenstore_parse_domain_config(int domid) } } - bs_table[hd_index + (is_scsi ? MAX_DISKS : 0)] = bdrv_new(dev); + bs = bs_table[hd_index + (is_scsi ? MAX_DISKS : 0)] = bdrv_new(dev); /* check if it is a cdrom */ if (type && !strcmp(type, "cdrom")) { - bdrv_set_type_hint(bs_table[hd_index], BDRV_TYPE_CDROM); + bdrv_set_type_hint(bs, BDRV_TYPE_CDROM); if (pasprintf(&buf, "%s/params", bpath) != -1) xs_watch(xsh, buf, dev); } + /* open device now if media present */ if (params[0]) { - if (bdrv_open(bs_table[hd_index + (is_scsi ? MAX_DISKS : 0)], - params, 0 /* snapshot */) < 0) + if (bdrv_open(bs, params, 0 /* snapshot */) < 0) fprintf(stderr, "qemu: could not open hard disk image '%s'\n", params); } -- 2.30.2